home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / pcboard / bcmx120.zip / PAGE.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-07-07  |  6KB  |  448 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Integer  INTEGER001
  26.     Integer  INTEGER002
  27.     Integer  INTEGER003
  28.     Integer  INTEGER004
  29.     Integer  INTEGER005
  30.     Integer  INTEGER006
  31.     Integer  INTEGER007
  32.     Integer  INTEGER008
  33.     Integer  INTEGER009
  34.     Integer  INTEGER010
  35.     Integer  INTEGER011
  36.     Integer  INTEGER012
  37.     Integer  INTEGER013
  38.     Integer  INTEGER014
  39.     Integer  INTEGER015
  40.     Integer  INTEGER016
  41.     String   STRING001
  42.     String   STRING002
  43.     String   STRING003
  44.     String   STRING004
  45.     String   STRING005
  46.     String   STRING006
  47.     String   STRING007
  48.     String   STRING008
  49.     String   STRING009
  50.     String   STRING010
  51.     String   STRING011
  52.     String   STRING012
  53.     String   STRING013
  54.     String   STRING014
  55.     String   STRING015
  56.     String   STRING016
  57.     String   STRING017
  58.     String   STRING018
  59.     String   STRING019
  60.     String   STRING020
  61.     String   TSTRING021(1)
  62.     String   STRING022
  63.     String   STRING023
  64.     String   STRING024
  65.     String   STRING025
  66.     String   STRING026
  67.     String   STRING027
  68.     String   STRING028
  69.     String   STRING029
  70.     Time     TIME001
  71.     Time     TIME002
  72.     Time     TIME003
  73.  
  74. ;------------------------------------------------------------------------------
  75.  
  76.     BOOLEAN001 = 0
  77.     STRING001 = PPEPath() + "graph\pgsys"
  78.     STRING020 = PPEPath() + "page.cfg"
  79.     STRING022 = ReadLine(STRING020, 5)
  80.     Tokenize STRING022
  81.     INTEGER009 = TokCount()
  82.     Redim TSTRING021, INTEGER009
  83.     For INTEGER010 = 1 To INTEGER009
  84.         STRING013 = GetToken()
  85.         If (STRING013 == "") Break
  86.         TSTRING021(INTEGER010) = STRING013
  87.     Next
  88.     STRING023 = PPEPath() + "cfg\pgmenus.cfg"
  89.     Tokenize ReadLine(STRING023, 1)
  90.     INTEGER012 = GetToken()
  91.     INTEGER015 = GetToken()
  92.     INTEGER011 = Random(Time())
  93.     INTEGER011 = Random(INTEGER012 - 1) + 1
  94.     Tokenize ReadLine(STRING023, 1 + INTEGER011)
  95.     INTEGER013 = GetToken()
  96.     INTEGER014 = GetToken()
  97.     STRING002 = TokenStr()
  98.     GetUser
  99.     BOOLEAN006 = 1
  100.     BOOLEAN002 = 1
  101.     STRING027 = PPEPath() + "graph\pgtext"
  102.     STRING026 = PPEPath() + "work\mxlog." + String(PcbNode())
  103.     INTEGER006 = ReadLine(STRING020, 1)
  104.     If (Upper(ReadLine(STRING020, 2)) == "YES") Then
  105.         BOOLEAN004 = 1
  106.     Else
  107.         BOOLEAN004 = 0
  108.     Endif
  109.     STRING029 = PPEPath() + "mx.cfg"
  110.     If (BOOLEAN004) Then
  111.         If (LoggedOn()) Goto LABEL001
  112.         If (Exist(STRING029)) Then
  113.             If (Upper(ReadLine(STRING029, 3)) == "YES") Then
  114.                 FAppend 3, STRING026, 1, 0
  115.                 Goto LABEL001
  116.             Endif
  117.             BOOLEAN004 = 0
  118.         Endif
  119.     Endif
  120.     :LABEL001
  121.     STRING015 = ReadLine(STRING020, 3)
  122.     If (Upper(ReadLine(STRING020, 4)) == "YES") Then
  123.         BOOLEAN005 = 0
  124.     Else
  125.         BOOLEAN005 = 1
  126.     Endif
  127.     If (BOOLEAN004) Then
  128.         STRING028 = "Page started at " + String(Time())
  129.         Gosub LABEL013
  130.     Endif
  131.     If (LangExt() <> "") Then
  132.         If (Exist(STRING027 + LangExt())) Then
  133.             STRING027 = STRING027 + LangExt()
  134.         Endif
  135.     Endif
  136.     STRING014 = ReadLine(STRING027, 1)
  137.     STRING005 = ReadLine(STRING027, 2)
  138.     STRING006 = ReadLine(STRING027, 3)
  139.     TIME001 = Time()
  140.     TIME002 = ReadLine(PCBDat(), 189)
  141.     TIME003 = ReadLine(PCBDat(), 190)
  142.     STRING018 = FileInf(PCBDat(), 7) + "pcboard.sys"
  143.     FOpen 1, STRING018, 0, 0
  144.     FSeek 1, 4, 0
  145.     FRead 1, STRING017, 2
  146.     FClose 1
  147.     INTEGER007 = STRING017
  148.     Select Case (INTEGER007)
  149.         Case 0
  150.             BOOLEAN003 = 0
  151.         Case -1
  152.             BOOLEAN003 = 1
  153.         Case Else
  154.             PrintLn "ERROR: cannot determine page bell status, defaulting to true"
  155.             BOOLEAN003 = 1
  156.             Wait
  157.     End Select
  158.     STRING007 = Chr(7)
  159.     STRING008 = Chr(13)
  160.     STRING009 = Chr(27)
  161.     STRING010 = Chr(27) + "["
  162.     STRING011 = STRING010 + "0;0H"
  163.     STRING012 = STRING010 + "K"
  164.     DefColor
  165.     Cls
  166.     If (BOOLEAN003) Then
  167.         If (((TIME002 > TIME003) && !((TIME001 > TIME003) && (TIME001 < TIME002))) || ((TIME003 > TIME002) && ((TIME001 >= TIME002) && (TIME001 <= TIME003)))) Then
  168.             :LABEL002
  169.             DispFile PPEPath() + "graph\page" + String(INTEGER011), 1 + 4
  170.             Tokenize STRING002
  171.             INTEGER001 = GetToken()
  172.             INTEGER002 = GetToken()
  173.             STRING024 = GetToken()
  174.             If (LoggedOn()) Goto LABEL003
  175.             STRING019 = ""
  176.             AnsiPos INTEGER001, INTEGER002
  177.             InputText STRING024 + "_", STRING019, 1, 60
  178.             If (STRING019 == "") Return
  179.             Newline
  180.             Goto LABEL004
  181.             :LABEL003
  182.             STRING019 = Upper(U_Name())
  183.             AnsiPos INTEGER001, INTEGER002
  184.             Print STRING024, STRING019
  185.             :LABEL004
  186.             INTEGER001 = GetToken()
  187.             INTEGER002 = GetToken()
  188.             STRING024 = GetToken()
  189.             STRING025 = ""
  190.             AnsiPos INTEGER001, INTEGER002
  191.             InputText STRING024 + "_", STRING025, 1, 60
  192.             If (STRING025 == "") Return
  193.             If (BOOLEAN004) Then
  194.                 STRING028 = "Page reason (" + Upper(STRING025) + ")"
  195.                 If (!LoggedOn()) STRING028 = STRING028 + " and username (" + Upper(STRING019) + ")"
  196.                 STRING028 = STRING028 + " entered"
  197.                 Gosub LABEL013
  198.             Endif
  199.             AnsiPos INTEGER013, INTEGER014
  200.             PrintLn ReplaceStr(STRING006, "%OPTEXT%", String(INTEGER006))
  201.             Gosub LABEL011
  202.             For INTEGER010 = 1 To INTEGER006
  203.                 Gosub LABEL012
  204.                 STRING004 = KInkey()
  205.                 If (STRING004 == " ") Then
  206.                     STRING003 = ""
  207.                     Gosub LABEL011
  208.                     Chat
  209.                     PageOff
  210.                     If (BOOLEAN004) Then
  211.                         STRING028 = "Page ended normally, exiting at " + String(Time())
  212.                         Gosub LABEL013
  213.                     Endif
  214.                     End
  215.                     Goto LABEL005
  216.                 Endif
  217.                 If (STRING004 == STRING009) Then
  218.                     INTEGER010 = INTEGER006 + 1
  219.                 Endif
  220.                 :LABEL005
  221.                 If (Abort()) INTEGER010 = INTEGER006 + 1
  222.             Next
  223.             STRING003 = ""
  224.             Gosub LABEL011
  225.             If (Abort()) Then
  226.                 ResetDisp
  227.                 Newline
  228.                 If (BOOLEAN004) Then
  229.                     STRING028 = "Page was aborted by user at " + String(Time())
  230.                     Gosub LABEL013
  231.                 Endif
  232.                 End
  233.                 Goto LABEL006
  234.             Endif
  235.             Newline
  236.         Endif
  237.     Endif
  238.     :LABEL006
  239.     INTEGER016 = Random(Time())
  240.     INTEGER016 = Random(INTEGER015 - 1) + 1
  241.     If ((Upper(ReadLine(STRING020, 6)) == "YES") && !BOOLEAN001) Then
  242.         BOOLEAN001 = 1
  243.         DispFile PPEPath() + "graph\emer" + String(INTEGER016), 1 + 4
  244.         AnsiPos INTEGER013, INTEGER014
  245.         STRING025 = Upper(NoChar())
  246.         InputYN ReadLine(STRING027, 1), STRING025, 7
  247.         If (Upper(STRING025) == Upper(YesChar())) Then
  248.             AnsiPos INTEGER013, INTEGER014
  249.             Print Space(Len(StripAtx(ReadLine(STRING027, 1))) + 5)
  250.             AnsiPos INTEGER013, INTEGER014
  251.             STRING025 = ""
  252.             InputStr ReadLine(STRING027, 2) + "_", STRING025, 1, 60, Mask_Ascii(), 8
  253.             If (STRING025 == Upper(ReadLine(STRING020, 7))) Then
  254.                 If (BOOLEAN004) Then
  255.                     STRING028 = "Correct emergency page password entered, paging"
  256.                     Gosub LABEL013
  257.                 Endif
  258.                 FreshLine
  259.                 PrintLn ReadLine(STRING027, 4)
  260.                 Delay 10
  261.                 Goto LABEL002
  262.                 Goto LABEL007
  263.             Endif
  264.             If (BOOLEAN004) Then
  265.                 STRING028 = "Incorrect emergency page password entered, not paging"
  266.                 Gosub LABEL013
  267.             Endif
  268.             FreshLine
  269.             PrintLn ReadLine(STRING027, 5)
  270.             Delay 10
  271.             PageOn
  272.             End
  273.             :LABEL007
  274.             Goto LABEL008
  275.         Endif
  276.         End
  277.     Endif
  278.     :LABEL008
  279.     DispFile PPEPath() + "graph\pgno" + String(INTEGER016), 1 + 4
  280.     Wait
  281.     If (BOOLEAN004) Then
  282.         If (BOOLEAN003) Goto LABEL009
  283.         STRING028 = "Page bell is off"
  284.         Goto LABEL010
  285.         :LABEL009
  286.         STRING028 = "Unsuccesfull page"
  287.         :LABEL010
  288.         STRING028 = STRING028 + ", exiting page at " + String(Time())
  289.         Gosub LABEL013
  290.     Endif
  291.     PageOn
  292.     Return
  293.     :LABEL011
  294.     INTEGER001 = GetX()
  295.     INTEGER002 = GetY()
  296.     SPrint STRING011, STRING012
  297.     INTEGER003 = 1
  298.     While (1) Do
  299.         STRING013 = ReadLine(STRING001, INTEGER003)
  300.         If (STRING013 == "") Break
  301.         SPrintLn STRING013
  302.         Inc INTEGER003
  303.     EndWhile
  304.     SPrint STRING010 + String(INTEGER002) + ";" + String(INTEGER001) + "H"
  305.     Return
  306.     :LABEL012
  307.     Tokenize STRING015
  308.     INTEGER004 = GetX()
  309.     INTEGER005 = GetY()
  310.     STRING016 = GetToken()
  311.     INTEGER003 = 1
  312.     While (STRING016 <> "") Do
  313.         If (INTEGER003 == INTEGER009) Then
  314.             AnsiPos INTEGER004, INTEGER005
  315.             Print TSTRING021(INTEGER003)
  316.             INTEGER003 = 1
  317.         Else
  318.             AnsiPos INTEGER004, INTEGER005
  319.             Print TSTRING021(INTEGER003)
  320.             Inc INTEGER003
  321.         Endif
  322.         INTEGER008 = STRING016
  323.         Sound INTEGER008
  324.         Delay GetToken()
  325.         STRING016 = GetToken()
  326.     EndWhile
  327.     Return
  328.     :LABEL013
  329.     If (LoggedOn()) Goto LABEL014
  330.     FPutLn 3, "    " + STRING028
  331.     Return
  332.     :LABEL014
  333.     Log STRING028, 0
  334.     Return
  335.  
  336. ;------------------------------------------------------------------------------
  337. ;
  338. ; Usage report (before postprocessing)
  339. ;
  340. ; ■ Statements used :
  341. ;
  342. ;    4       End
  343. ;    1       Cls
  344. ;    2       Wait
  345. ;    53      Goto 
  346. ;    90      Let 
  347. ;    4       Print 
  348. ;    4       PrintLn 
  349. ;    41      If 
  350. ;    3       DispFile 
  351. ;    1       FOpen 
  352. ;    1       FAppend 
  353. ;    1       FClose 
  354. ;    1       FPutLn 
  355. ;    1       ResetDisp
  356. ;    1       GetUser
  357. ;    1       DefColor
  358. ;    1       Log 
  359. ;    1       InputStr 
  360. ;    1       InputYN 
  361. ;    11      Gosub 
  362. ;    7       Return
  363. ;    3       Delay 
  364. ;    2       Inc 
  365. ;    3       Newline
  366. ;    5       Tokenize 
  367. ;    2       InputText 
  368. ;    9       AnsiPos 
  369. ;    2       FreshLine
  370. ;    1       Sound 
  371. ;    1       Chat
  372. ;    2       SPrint 
  373. ;    1       SPrintLn 
  374. ;    2       PageOn
  375. ;    1       PageOff
  376. ;    1       FSeek 
  377. ;    1       FRead 
  378. ;    1       Redim 
  379. ;
  380. ;
  381. ; ■ Functions used :
  382. ;
  383. ;    1       -
  384. ;    49      +
  385. ;    2       -
  386. ;    15      ==
  387. ;    2       <>
  388. ;    3       <
  389. ;    3       <=
  390. ;    3       >
  391. ;    5       >=
  392. ;    37      !
  393. ;    9       &&
  394. ;    3       ||
  395. ;    1       Len(
  396. ;    11      Upper()
  397. ;    1       Space()
  398. ;    4       Chr()
  399. ;    2       Abort()
  400. ;    4       Random()
  401. ;    7       Time()
  402. ;    1       U_Name()
  403. ;    1       NoChar()
  404. ;    1       YesChar()
  405. ;    1       StripAtx()
  406. ;    11      String()
  407. ;    1       Mask_Ascii()
  408. ;    3       PCBDat()
  409. ;    9       PPEPath()
  410. ;    1       PcbNode()
  411. ;    21      ReadLine()
  412. ;    14      GetToken()
  413. ;    2       Exist()
  414. ;    1       TokenStr()
  415. ;    3       LangExt()
  416. ;    2       GetX()
  417. ;    2       GetY()
  418. ;    1       FileInf()
  419. ;    1       KInkey()
  420. ;    4       LoggedOn()
  421. ;    1       TokCount()
  422. ;    1       PageStat()
  423. ;    1       ReplaceStr()
  424. ;
  425. ;------------------------------------------------------------------------------
  426. ;
  427. ; Analysis flags : d
  428. ;
  429. ; d - Access PCBOARD.DAT ■ 2
  430. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  431. ;     for many PPE so they can find various informations on the system
  432. ;     (system paths, max number of lines in messages, ...) but it may also
  433. ;     be a way to gather vital informations.
  434. ;     ■ Search for : PCBDAT()
  435. ;
  436. ;------------------------------------------------------------------------------
  437. ;
  438. ; Postprocessing report
  439. ;
  440. ;    2       For/Next
  441. ;    2       While/EndWhile
  442. ;    23      If/Then or If/Then/Else
  443. ;    1       Select Case
  444. ;
  445. ;------------------------------------------------------------------------------
  446. ;                 AEGiS Corp - Break the routines, code against the machines!
  447. ;------------------------------------------------------------------------------
  448.